# -*- coding: utf-8 -*- 
# @project : 《Atcoder》
# @Author : created by bensonrachel on 2021/7/25
# @File : （step2）F. String Game （CF）.py
# https://codeforces.com/edu/course/2/lesson/6/2/practice/contest/283932/problem/F

# 题目是说：在剩下的字符串里是否还存在可以按顺序构成目标串的字符，找出对于一个字符串，最多能按给出的顺序从里面删多少个字符，
# 使其再删一个就不再存在可以按顺序构成目标串的字符

"""
Example
input
ababcba
abb
5 3 4 1 7 6 2
output
3
"""

def re(s, p):#这个函数是判断在剩下的字符串里是否还存在可以按顺序构成目标串的字符
    tag = 0
    for i in s:#遍历每个总串的字符
        if (i == p[tag]):#遇到一个与当前目标串的对应的位置的字符相同的字符即可
            tag += 1#然后滚到目标串的下一个字符
            if (tag == len(p)):#看是否全部目标串的字符都有匹配，有就直接return True
                return True
    return False#说明没有。


def cut(s, rate, mid):#删字母的函数，删完不改变（不影响）原来的元素下标，所以要用数组来做。
    l = list(s)
    # print(mid)
    if (mid > len(s)): mid = len(s)
    for i in range(mid):
        l[rate[i] - 1] = ""
    return "".join(l)


def bi(s, p, rate):#找不大于的最大值的模板
    x = len(s) - len(p)#
    l = -1
    r = x + 1#右界，要删的元素最大值肯定是两串长度之差，不然个数都不够了，怎么会还有字符可以构成目标串呢
    while (l + 1 < r):
        mid = (l + r) // 2
        s1 = cut(s, rate, mid)
        if (re(s1, p)):
            l = mid
        else:
            r = mid
    return l


if __name__ == "__main__":
    str = input()
    p_str = input()
    rate = [int(i) for i in input().split()]
    # print(cut(str,rate,3))
    print(bi(str, p_str, rate))